MSSQL StoredProc parameter ako CatalogName
Otázka od: sulodk@atlas.cz
10. 12. 2003 16:49
Zdar,
ako sa da v MSSQL vytvorit nejaka takato SP ?:
CREATE PROCEDURE [dbo].[AAA]
@CatalogName varchar(128),
@Name varchar(128) OUTPUT
AS
SELECT @Name = [name]
FROM @CatalogName..[TABLE1]
RETURN @@Error
GO
.. t.j. potrebujem ako parameter zadat nazov katalogu, kde sa potrebna tbl.
nachadza..
Dik
Miso
Odpovedá: Lstiburek Pavel
10. 12. 2003 16:58
Podivej se na sp_executesql . Pokud to nepujde takhle tak nijak !
Pavel
> From: sulodk@atlas.cz [mailto:sulodk@atlas.cz]
> Zdar,
> ako sa da v MSSQL vytvorit nejaka takato SP ?:
> CREATE PROCEDURE [dbo].[AAA]
> @CatalogName varchar(128),
> @Name varchar(128) OUTPUT
> AS
> SELECT @Name = [name]
> FROM @CatalogName..[TABLE1]
> RETURN @@Error
> GO
> .. t.j. potrebujem ako parameter zadat nazov katalogu, kde sa
> potrebna tbl.
> nachadza..
Odpovedá: Vlastimil Bardon
10. 12. 2003 18:05
No, problem tam bude. Pokud nevis CatalogName (respektive jmeno serveru,
tabulky, nebo cokoli podobneho), tak se pouzije toto:
exec('SELECT name FROM '+@CatalogName+'..TABLE1')
Ale nemas sanci dat ten vysledek do @Name
Takze jedina sance je, udelat si tu proceduru na tom druhem serveru a volat ji
cca takto:
DECLARE @Proc varchar(100)
SELECT @Proc = @CatalogName+'.dbo.MojeVzdalenaProcedura'
Exec @Proc @Nazev OUT
.... jinymi slovy - pouzivas-li exec, pak muzes mit jmeno procedury v promenne
-----Original Message-----
From: Lstiburek Pavel [mailto:lstiburek@ceb.cz]
Sent: Wednesday, December 10, 2003 4:58 PM
Podivej se na sp_executesql . Pokud to nepujde takhle tak nijak !
Pavel
> From: sulodk@atlas.cz [mailto:sulodk@atlas.cz]
> Zdar,
> ako sa da v MSSQL vytvorit nejaka takato SP ?:
> CREATE PROCEDURE [dbo].[AAA]
> @CatalogName varchar(128),
> @Name varchar(128) OUTPUT
> AS
> SELECT @Name = [name]
> FROM @CatalogName..[TABLE1]
> RETURN @@Error
> GO
> .. t.j. potrebujem ako parameter zadat nazov katalogu, kde sa
> potrebna tbl.
> nachadza..
Odpovedá: Lstiburek Pavel
11. 12. 2003 9:29
Jednou z moznosti je:
DECLARE @command nvarchar(1000),
@Name nvarchar(100)
SET @Command = 'SELECT @Name = [name] FROM ' + @CatalogName + '..[TABLE1]'
EXECUTE sp_executesql @Command, N'@Name nvarchar(100)OUTPUT', @Name OUTPUT
To funfuje celkem v pohode.
Pavel
PS: I kdyz tento zpusob leta, neni prave nejstastnejsi
> From: Vlastimil Bardon [mailto:bardon@akord-soft.cz]
> No, problem tam bude. Pokud nevis CatalogName (respektive
> jmeno serveru, tabulky, nebo cokoli podobneho), tak se pouzije toto:
>
> exec('SELECT name FROM '+@CatalogName+'..TABLE1')
>
> Ale nemas sanci dat ten vysledek do @Name
>
> Takze jedina sance je, udelat si tu proceduru na tom druhem
> serveru a volat ji cca takto:
>
> DECLARE @Proc varchar(100)
> SELECT @Proc = @CatalogName+'.dbo.MojeVzdalenaProcedura'
> Exec @Proc @Nazev OUT
>
> .... jinymi slovy - pouzivas-li exec, pak muzes mit jmeno
> procedury v promenne
>
> -----Original Message-----
> From: Lstiburek Pavel [mailto:lstiburek@ceb.cz]
> Sent: Wednesday, December 10, 2003 4:58 PM
>
> Podivej se na sp_executesql . Pokud to nepujde takhle tak nijak !
>
> Pavel
>
> > From: sulodk@atlas.cz [mailto:sulodk@atlas.cz]
> > Zdar,
> > ako sa da v MSSQL vytvorit nejaka takato SP ?:
> > CREATE PROCEDURE [dbo].[AAA]
> > @CatalogName varchar(128),
> > @Name varchar(128) OUTPUT
> > AS
> > SELECT @Name = [name]
> > FROM @CatalogName..[TABLE1]
> > RETURN @@Error
> > GO
> > .. t.j. potrebujem ako parameter zadat nazov katalogu, kde sa
> > potrebna tbl.
> > nachadza..
>